package busco

import "wails/schema/enums/battleenum"

// B奖励
// @schema_export --ident=schema --json --config=奖励
// @schema_go
// @cache_go
// @cache_ts
// @alias 奖励
type B奖励 struct {
	// @alias 名称
	M名称 string
	// @alias 描述
	M描述 string
	// @alias 图标
	T图标 string `link:"图标"`
	// @alias 标识
	B标识 string
	// @alias 标旗
	B标旗 map[J奖励标旗]bool
	// 界面上显示的数量，可以是数字，也可以是文字，例如若干，大量等
	// @alias 显示
	X显示 string
	// 符合条件才能发放奖励
	// @alias 条件
	T条件 map[string]string `link:"条件"`

	// @alias 未领取标识
	W未领取标识 string
}

type Z指定属性 struct {
	// @alias 属性
	S属性 string `link:"属性"`
	// @alias 值
	Z值 float64
}

// @schema_export --ident=schema --json --config=奖励
// @schema_go
// @cache_go
// @cache_ts
// @alias 奖励_卡片
type B奖励_卡片 struct {
	B奖励
	// @alias 卡片
	K卡片 string `link:"卡片"`

	// 指定奖励到的卡包，优先级大于卡片的【奖励到卡包】
	// @alias 奖励到卡包
	J奖励到卡包 *S查找卡槽
}

// @schema_export --ident=schema --json --config=奖励
// @schema_go
// @cache_go
// @cache_ts
// @alias 奖励_经验
type B奖励_经验 struct {
	B奖励
	// @alias 等级
	D等级 string `link:"等级"`
	// @alias 允许平均分配
	Y允许平均分配 bool
	// @alias 奖励到主体
	J奖励到主体 *S查找主体
	// @alias 奖励到卡片
	J奖励到卡片 *S查找卡片集合
}

// @schema_export --ident=schema --json --config=奖励
// @schema_go
// @cache_go
// @cache_ts
// @alias 奖励_商品
type B奖励_商品 struct {
	B奖励

	// @alias 商品
	S商品 string `link:"商品"`
}

// @schema_export --ident=schema --json --config=奖励
// @schema_go
// @cache_go
// @cache_ts
// @alias 奖励_得分
type B奖励_得分 struct {
	B奖励

	// @alias 得分
	D得分 *S查找得分
}

// @schema_export --ident=schema --json --config=奖励
// @schema_go
// @cache_go
// @cache_ts
// @alias 奖励_数量
type B奖励_数量 struct {
	B奖励
	// @alias 几率
	J几率 float64 `value:"1.0"`
	// @alias 奖励
	J奖励 string `link:"奖励"`
	// @alias 数量
	S数量 *ValueRange
	// @alias 扩展属性
	K扩展属性 map[string]interface{} `_type:"扩展属性"`

	// @alias 属性
	S属性 map[string]*Z指定属性
}

// @schema_export --ident=schema --json --config=奖励
// @schema_go
// @cache_go
// @cache_ts
// @alias 奖励_列表
type B奖励_列表 struct {
	B奖励

	// @alias 奖励集
	L奖励集 map[string]*S奖励列表项

	// 如果奖励的卡片，则将奖励的卡片放置到卡包中
	// @alias 奖励到卡包
	J奖励到卡包 *S查找卡槽
}

type S奖励列表项 struct {
	// @alias 数量
	S数量 float64 `value:"1.0"`
	// @alias 奖励
	J奖励 string `link:"奖励"`
	// @alias 属性
	S属性 map[string]interface{} `_type:"扩展属性"`
}

// @schema_export --ident=schema --json --config=奖励
// @schema_go
// @cache_go
// @cache_ts
// @alias 奖励_概率
type B奖励_概率 struct {
	B奖励

	// @alias 奖励集
	L奖励集 map[string]*S奖励概率项

	// 如同瀑布一般自上而下进行判断，判断成功后选中对象；当选中的对象数量达到【选中数量】时中断流程
	// 当选中数量为0时，遍历选池中所有对象
	// @alias 选中数量
	X选中数量 float32

	// 允许失败后中断流程
	// @alias 允许失败中断
	Y允许失败中断 bool

	// 如果奖励的卡片，则将奖励的卡片放置到卡包中
	// @alias 奖励到卡包
	J奖励到卡包 *S查找卡槽
}

type S奖励概率项 struct {

	// @alias 概率
	G概率 int `value:"1.0"`
	// @alias 奖励
	J奖励 string `link:"奖励"`
	// @alias 属性
	S属性 map[string]interface{} `_type:"扩展属性"`
}

// @schema_export --ident=schema --json --config=奖励
// @schema_go
// @cache_go
// @cache_ts
// @alias 奖励_权重
type B奖励_权重 struct {
	B奖励

	// @alias 奖励集
	L奖励集 map[string]*S奖励权重项
	// 如果奖励的卡片，则将奖励的卡片放置到卡包中
	// @alias 奖励到卡包
	J奖励到卡包 *S查找卡槽
}

type S奖励权重项 struct {

	// @alias 权重
	Q权重 int `value:"1.0"`
	// @alias 奖励
	J奖励 string `link:"奖励"`
	// @alias 属性
	S属性 map[string]interface{} `_type:"扩展属性"`
}

// @schema_export --ident=schema --json --config=奖励
// @schema_go
// @cache_go
// @cache_ts
// @alias 奖励_积分
type B奖励_积分 struct {
	B奖励

	// @alias 奖励集
	L奖励集 map[string]*S奖励积分项
	// 从调用奖励的主体中，通过[积分属性]获取属性值作为积分
	// @alias 积分属性
	J积分属性 string

	// 如同瀑布一般自上而下进行判断，判断成功后选中对象；当选中的对象数量达到【选中数量】时中断流程
	// 当选中数量为0时，遍历选池中所有对象
	// @alias 选中数量
	X选中数量 float32
}

type S奖励积分项 struct {
	// @alias 积分
	J积分 int `value:"1.0"`
	// @alias 奖励
	J奖励 string `link:"奖励"`
	// @alias 属性
	S属性 map[string]interface{} `_type:"扩展属性"`
}

type S比较属性 struct {
	// @alias 属性
	S属性 string `link:"属性"`
	// @alias 比较
	B比较 battleenum.E数字比较
	// @alias 值
	Z值 int
}

// @alias 挂机奖励标旗
type J奖励标旗 int

const (
	J奖励标旗_放置到未领取奖励 J奖励标旗 = iota
	J奖励标旗_放置到未领取资源
)
